package co.yixiang.modules.order.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.io.Serializable;

/**
 * @ClassName OrderCountDTO
 * @Author hupeng <610796224@qq.com>
 * @Date 2019/10/30
 **/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class UserOrderCountVo implements Serializable {

    /**订单支付没有退款 数量*/
    @ApiModelProperty(value = "订单支付没有退款数量")
    private Integer orderCount;

    /**订单支付没有退款 支付总金额*/
    @ApiModelProperty(value = "订单支付没有退款支付总金额")
    private Double sumPrice;

    /**订单待支付 数量*/
    @ApiModelProperty(value = "订单待支付数量")
    private Integer unpaidCount;

    /**订单待发货数量*/
    @ApiModelProperty(value = "订单待发货数量")
    private Integer unshippedCount;

    /**订单待收货数量*/
    @ApiModelProperty(value = "订单待收货数量")
    private Integer receivedCount;

    /**订单待评价数量*/
    @ApiModelProperty(value = "订单待评价数量")
    private Integer evaluatedCount;

    /**订单已完成数量*/
    @ApiModelProperty(value = "订单已完成数量")
    private Integer completeCount;

    /**订单退款数量*/
    @ApiModelProperty(value = "订单退款数量")
    private Integer refundCount;

    public static UserOrderCountVoBuilder builder() {
        return new UserOrderCountVoBuilder();
    }

    public static class UserOrderCountVoBuilder {
        private Integer orderCount;
        private Double sumPrice;
        private Integer unpaidCount;
        private Integer unshippedCount;
        private Integer receivedCount;
        private Integer evaluatedCount;
        private Integer completeCount;
        private Integer refundCount;

        UserOrderCountVoBuilder() {
        }

        public UserOrderCountVoBuilder orderCount(Integer orderCount) {
            this.orderCount = orderCount;
            return this;
        }

        public UserOrderCountVoBuilder sumPrice(Double sumPrice) {
            this.sumPrice = sumPrice;
            return this;
        }

        public UserOrderCountVoBuilder unpaidCount(Integer unpaidCount) {
            this.unpaidCount = unpaidCount;
            return this;
        }

        public UserOrderCountVoBuilder unshippedCount(Integer unshippedCount) {
            this.unshippedCount = unshippedCount;
            return this;
        }

        public UserOrderCountVoBuilder receivedCount(Integer receivedCount) {
            this.receivedCount = receivedCount;
            return this;
        }

        public UserOrderCountVoBuilder evaluatedCount(Integer evaluatedCount) {
            this.evaluatedCount = evaluatedCount;
            return this;
        }

        public UserOrderCountVoBuilder completeCount(Integer completeCount) {
            this.completeCount = completeCount;
            return this;
        }

        public UserOrderCountVoBuilder refundCount(Integer refundCount) {
            this.refundCount = refundCount;
            return this;
        }

        public UserOrderCountVo build() {
            return new UserOrderCountVo(orderCount, sumPrice, unpaidCount, unshippedCount, receivedCount, evaluatedCount, completeCount, refundCount);
        }

        public String toString() {
            return "UserOrderCountVo.UserOrderCountVoBuilder(orderCount=" + this.orderCount + ", sumPrice=" + this.sumPrice + ", unpaidCount=" + this.unpaidCount + ", unshippedCount=" + this.unshippedCount + ", receivedCount=" + this.receivedCount + ", evaluatedCount=" + this.evaluatedCount + ", completeCount=" + this.completeCount + ", refundCount=" + this.refundCount + ")";
        }
    }
}
